在父類別中,有不希望被子類別繼承的成員 可以加上final 來終止繼承。
若父類別中的函數成員加上 final ,子類別也就無法改寫(overriding)。
修改 super與this 文章中的範例,來做本篇的示範:
final class Cfinal
{
	public void show()
	{
		System.out.println("Cfinal 父類別");
	}
}
class Ctest extend Cfinal
{
	public void show()
	{
		System.out.println("Ctest 子類別");
	}
}
class Caaa
{
   protected final int num=10;
   public final void show()
   {
      System.out.println("Caaa_num="+num);
   }
}
class Cbbb extends Caaa
{
   int num=10;
   public void show()
   {
      super.num=20;
      System.out.println("Cbbb_num="+num);
      super.show();
   }
}
public class supervsthis
{
   public static void main(String args[])
   {
      Cbbb b=new Cbbb();
      b.show();
   }
}
於本次範例有幾個點注意的部分:
class Ctest extend Cfinal
protected final int num=10;
public final void show()
{
      System.out.println("Caaa_num="+num);
}
分別有 資料成員 num 與函數show() 經過 final 宣告,
因此在子類別 Cbbb 就無法正常繼承來自父類別的 num 或是 改寫父類別的 show() 函數
protected final int num=10;
常見範例如:
protected final double PI=3.1415;
如此一來,程式任何一處將不會更改到 PI 值。
如果您喜歡我的文章,可以至 4xDev 的 Java 學習系列閱讀更多 Java 文章。